/*
 * SecurePlaceApp.java
 */

package secureplace;

import java.util.Vector;
import org.jdesktop.application.Application;
import org.jdesktop.application.SingleFrameApplication;



/**
 * The main class of the application.
 */
class SecurePlaceApp extends SingleFrameApplication {

    static String modo = "Seguro";
    private static Vector colaArchivos = new Vector();
    /*
     *
     * Metodo que coordina las acciones cuando se cambia de un modo a otro
     * */
    static void modo(String m) {
        modo = m;
        if (m.equals("Seguro")) {
            Audio.stopCapture = true;
            secureplace.SecurePlaceView.EtiquetaModoActual.setText("Modo Seguro");
            secureplace.TestMotionDetection.p.close();
            secureplace.SecurePlaceView.EtiquetaEstadoWebcam.setText("Inactivo");
            secureplace.SecurePlaceView.EtiquetaEstadoAudio.setText("Inactivo");
        }
        if (m.equals("Vigilancia")){
            if (!secureplace.SecurePlaceView.EtiquetaModoActual.getText().equalsIgnoreCase("Modo Vigilancia")) {
                secureplace.SecurePlaceView.EtiquetaModoActual.setText("Modo Vigilancia");
                secureplace.SecurePlaceView.EtiquetaEstadoWebcam.setText("Iniciando");
                secureplace.SecurePlaceView.EtiquetaEstadoAudio.setText("Iniciando");

                //Se inicia la vigilancia de la camara
                //System.out.println("Vigilancia Webcam");
                String argumentos[] = secureplace.Webcam.listarLocalizadoresCamaras();
                argumentos[0] = secureplace.Parametros.Webcam_Localizador.toString();
                TestMotionDetection.main(argumentos);
                
                new secureplace.Webcam.RelojWebcam();
                //Se inicia la vigilancia del audio
                //System.out.println("Vigilancia Audio");
                Audio.inicio();
            }
        }
        if (m.contains("Emergencia")){
            String archivo= "";
            secureplace.SecurePlaceView.EtiquetaModoActual.setText("Modo Emergencia");
            if (Parametros.Notificaciones_Alarma_Activada) {
                System.out.println("Notificaciones_Alarma_Activada="+Parametros.Notificaciones_Alarma_Activada);
                Notificaciones.iniciarplayClip(Parametros.Notificaciones_Alarma_Archivo, Integer.parseInt(Parametros.Notificaciones_Alarma_Repeticiones));
            }
            if (m.contains("foto")) {
                if (secureplace.SecurePlaceView.EtiquetaEstadoWebcam.getText().contains("Vigilando")) {
                    archivo = TestMotionDetection.capturarImagen();
                }
            }
            if (m.contains("audio")) {
                if (secureplace.SecurePlaceView.EtiquetaEstadoAudio.getText().contains("Vigilando")) {
                    archivo = Audio.guardarAudio();
                }
            }
            
            if (!archivo.equals("")) {
                if (!colaArchivos.contains(archivo)) {
                    colaArchivos.add(archivo);
                    if (!secureplace.Parametros.Notificaciones_Email_Direccion.equals("")) {
                        Notificaciones.enviarEmail(archivo);
                    }
                    colaArchivos.remove(archivo);
                }
                if (!Notificaciones.llamadaActiva) {
                    if (!secureplace.Parametros.Notificaciones_Telefono_Numero.equals("")) {
                        Thread llamarThread = new Thread(new Notificaciones.llamarPorTelefono());
                        llamarThread.start();
                    }
                }
            }
            
        }



    }

    /**
     * At startup create and show the main frame of the application.
     */
    @Override protected void startup() {
        show(new SecurePlaceView(this));
        secureplace.Parametros.leerParametros();
        secureplace.Bluetooth.RemoteDeviceDiscovery.DispositivoLocal();
        secureplace.Bluetooth.buscarBluetooth();
        new secureplace.Bluetooth.RelojBluetooth();
        Notificaciones.cargarDriverPuertoSerial();
    }

    /**
     * This method is to initialize the specified window by injecting resources.
     * Windows shown in our application come fully initialized from the GUI
     * builder, so this additional configuration is not needed.
     */
    @Override protected void configureWindow(java.awt.Window root) {
    }

    /**
     * A convenient static getter for the application instance.
     * @return the instance of SecurePlaceApp
     */
    public static SecurePlaceApp getApplication() {
        return Application.getInstance(SecurePlaceApp.class);
    }


    /**
     * Main method launching the application.
     */
    public static void main(String[] args) {
        launch(SecurePlaceApp.class, args);
    }
}
